<?php
namespace ImiDemo\HttpDemo\MainServer\Task;

use Imi\Task\TaskParam;
use Imi\Task\Annotation\Task;
use Imi\Task\Interfaces\ITaskHandler;

/**
 * @Task("testTask")
 */
class TestTask implements ITaskHandler
{
    /**
     * 任务处理方法
     * @return void
     */
    public function handle(TaskParam $param, \Swoole\Server $server, int $taskID, int $WorkerID)
    {
        echo 'task-', $taskID, ' start:', time(), PHP_EOL;
        sleep(3); // 这里可以延时，可以执行耗时长的任务，不会影响请求接口的耗时
        $server->finish('success');
    }

    /**
     * 任务结束时触发
     * @param \swoole_server $server
     * @param int $taskId
     * @param mixed $data
     * @return void
     */
    public function finish(\Swoole\Server $server, int $taskID, $data)
    {
        echo 'task', $taskID, ' finish', PHP_EOL, PHP_EOL, 'data:', $data, PHP_EOL;
    }
}